package com.yunhe.inspect.util;

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.net.URLEncoder;

public class DownloadUtil {

    public static void downloadExcel( HttpServletResponse response, String path) throws IOException {

        // 创建输出流对象
        ServletOutputStream outputStream = response.getOutputStream();

        //以字节数组的形式读取文件
        byte[] bytes = FileUtil.readBytes(path );

        // 设置返回内容格式
        response.setContentType("application/octet-stream");

        // 把文件名按UTF-8取出并按ISO8859-1编码，保证弹出窗口中的文件名中文不乱码
        // 中文不要太多，最多支持17个中文，因为header有150个字节限制。
        // 这一步一定要在读取文件之后进行，否则文件名会乱码，找不到文件
        //fileName = new String(fileName.getBytes("UTF-8"),"ISO8859-1");

        response.setCharacterEncoding("utf-8");
        response.setContentType("application/vnd.ms-excel");
        // 设置下载弹窗的文件名和格式（文件名要包括名字和文件格式）
        response.setHeader("Content-Disposition", "attachment;filename=" + new File(path).getName());

        // 返回数据到输出流对象中
        outputStream.write(bytes);

        // 关闭流对象
        IoUtil.close(outputStream);
    }

}

